package jd;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

/**
 * 玩家类
 */
@Aspect
@Component
public class Player {
    private Equip armet; // 头盔
    private Equip loricae; // 铠甲
    private Equip boot; // 鞋子
    private Equip ring; // 指环

    /**
     * 构造函数，初始化玩家的装备为默认的空装备
     */
    public Player() {
        this.armet = new Equip();
        this.loricae = new Equip();
        this.boot = new Equip();
        this.ring = new Equip();
    }



    @Before("execution(* jd.Player.updateEqi(..))")
    public void beforeUpdateEquipment(JoinPoint joinPoint) {
        // 创建一个示例装备对象用于测试
        Equip exampleEquip = new Equip("示例装备", "头盔", 10L, 20L, 30L);
        updateEqi(exampleEquip);
    }
    public void updateEqi(Equip equip) {
        // 根据装备的类型进行更新
        switch (equip.getType()) {
            case "头盔":
                System.out.println(armet.getName() + ":升级为:'" + equip.getName() + "'");
                this.armet = equip;
                break;
            case "铠甲":
                System.out.println(loricae.getName() + ":升级为:'" + equip.getName() + "'");
                this.loricae = equip;
                break;
            case "鞋子":
                System.out.println(boot.getName() + ":升级为:'" + equip.getName() + "'");
                this.boot = equip;
                break;
            case "指环":
                System.out.println(ring.getName() + ":升级为:'" + equip.getName() + "'");
                this.ring = equip;
                break;
            default:
                System.out.println("无效的装备类型");
        }
    }

    /**
     * 获取头盔装备
     *
     * @return 头盔装备
     */
    public Equip getArmet() {
        return armet;
    }

    /**
     * 设置头盔装备
     *
     * @param armet 头盔装备
     */
    public void setArmet(Equip armet) {
        this.armet = armet;
    }

    /**
     * 获取铠甲装备
     *
     * @return 铠甲装备
     */
    public Equip getLoricae() {
        return loricae;
    }

    /**
     * 设置铠甲装备
     *
     * @param loricae 铠甲装备
     */
    public void setLoricae(Equip loricae) {
        this.loricae = loricae;
    }

    /**
     * 获取鞋子装备
     *
     * @return 鞋子装备
     */
    public Equip getBoot() {
        return boot;
    }

    /**
     * 设置鞋子装备
     *
     * @param boot 鞋子装备
     */
    public void setBoot(Equip boot) {
        this.boot = boot;
    }

    /**
     * 获取指环装备
     *
     * @return 指环装备
     */
    public Equip getRing() {
        return ring;
    }

    /**
     * 设置指环装备
     *
     * @param ring 指环装备
     */
    public void setRing(Equip ring) {
        this.ring = ring;
    }
}
